/*
数据结构 解题报告：
http://git.oschina.net/et0662/sznoi-Data_Structure
*/
#include<stdio.h>
#include<string.h>

#define MAX 1000

typedef struct _NODE
{
	char data;
	struct _NODE * left;
	struct _NODE * right;
}Node, *ptrNode, tree, *ptrTree;

char a[MAX+1], b[MAX+1];

/*恢复树*/
ptrTree makeTree(int i,int j, int m,int n)
{
	char c;
	int x,y;
	ptrNode p=NULL;

	if((i>j) || (m>n))
		return NULL;

	c=a[i];
	
	/* 找出父结点 在中序中的位置 */
	for(x=m;x<=n;x++)
	{
		if(b[x]==c)
			break;
	}

	x=x-m; /*左子树的结点数*/
	y=n-x; /*右子树的结点数*/

	p=new Node;
	p->data=c;
	
	if(x)
		p->left=makeTree(i+1,i+x,m,m+x-1);
	else
		p->left=NULL;
	if(y)
		p->right=makeTree(i+x+1,j,m+x+1,n);
	else
		p->right=NULL;
	return p;
}

/*后序输出树*/
void rpt(ptrTree t)
{
	if(t)
	{
		rpt(t->left);
		rpt(t->right);
		printf("%c",t->data);
	}
}

/* 释放树 */
void emptyTree(ptrTree t)
{
	if(t)
	{
		emptyTree(t->left);
		emptyTree(t->right);
		delete(t);
	}
}

int main(void)
{
	int len;
	ptrTree t;
	scanf("%s",a);
	scanf("%s",b);
	len=strlen(a);
	t=makeTree(0,len-1,0,len-1);
	rpt(t);
	emptyTree(t);
	return 0;
}
